Host processor systems may store and retrieve data using storage devices containing a plurality of host interface units (host adapters), disk drives, and disk interface units (disk adapters). Such storage devices are provided, for example, by EMC Corporation of Hopkinton, Mass. and disclosed in U.S. Pat. No. 5,206,939 to Yanai et al., U.S. Pat. No. 5,778,394 to Galtzur et al., U.S. Pat. No. 5,845,147 to Vishlitzky et al., and U.S. Pat. No. 5,857,208 to Ofek, which are incorporated herein by reference. The host systems access the storage device through a plurality of channels provided therewith. Host systems provide data and access control information through the channels of the storage device and the storage device provides data to the host systems also through the channels. The host systems do not address the disk drives of the storage device directly, but rather, access what appears to the host systems as a plurality of logical volumes. Different sections of the logical volumes may or may not correspond to the actual disk drives.
Thin provisioning (also referred to as virtual provisioning) storage systems present a large amount of storage capacity to a host, but consume space only as needed from a shared pool. The devices of thin provisioning are known as thin devices or thin LUNs. With thin devices, the host visible capacity (e.g., storage perceived by the applications) is larger than the actual allocated space on the storage system. This simplifies the creation and allocation of storage capacity. Thin devices may be sized to accommodate growth without regard for currently available assets. Physical storage is assigned to the server in a capacity-on-demand fashion from a shared pool.
To guarantee that sufficient allocated space is available when needed in a thin provisioning environment, known techniques provide that extents on storage devices may be pre-allocated when thin devices are bound to a thin storage pool. Binding a thin device to a pool associates the thin device with the pool. Users may pre-allocate space to certain volumes of thin devices or may pre-allocate entire thin devices. When space is pre-allocated, that space may be reserved for the thin device starting at the beginning of the thin device. For example, if 100 MB is pre-allocated when a thin device is bound to a storage pool, the space for the first 100 MB of the thin device may be allocated in the storage pool. Any writes to the pre-allocated area of the thin device do not result in additional allocation in the storage pool. This approach to guarantee allocation, however, may result in various storage space inefficiencies, since it requires that the allocated thin device capacity be held “in reserve” and thereby reduces the “thinness” property of the thin device.
Accordingly, it would be desirable to implement a system that guarantees space availability for thinly-provisioned devices in a way that reduces the need for pre-allocating space or otherwise committing space ahead of time to specific thin devices.